home *** CD-ROM | disk | FTP | other *** search
/ Die Speccy' 97 / Die Speccy' 97.iso / amiga_system / the_aminet / comm / bbs / bbbbs85.lha / rexx / bbsXferStats.baud < prev    next >
Text File  |  1995-01-25  |  4KB  |  174 lines

  1. /* $VER: bbsXferStats.rexx 8.4 (25.1.95) */
  2.  
  3. OPTIONS RESULTS
  4. NUMERIC DIGITS 14
  5. SIGNAL ON FAILURE
  6. SIGNAL ON SYNTAX
  7.  
  8. PARSE ARG indx filename colorflag protocol extdir .
  9.  
  10. CR='0D'x
  11. def=''
  12. pen3=''
  13. IF colorflag=0 THEN
  14.   DO
  15.     def=''
  16.     pen3=''
  17.   END
  18. lineup='1B'x'M'
  19. bbspath=GETCLIP('BBS_path')
  20. tfail=''
  21. bytes=''
  22. Status z
  23. string=RESULT
  24. string=COMPRESS(string,'0D'x)
  25. Status Vers
  26. BB_VERS=RESULT
  27. IF RIGHT(BB_VERS,4)>1.59 THEN
  28.   DO
  29.     PARSE VAR string . 'Local Name: 'temp . 'Xfer''ed: 'bytes . 'Elapsed Time: 'min':'sec'0A'x .
  30.     slash=LASTPOS('/',temp)
  31.     IF slash=0 THEN slash=LASTPOS(':',temp)
  32.     IF slash~=0 THEN temp=SUBSTR(temp,slash+1)
  33.   END
  34. ELSE PARSE VAR string temp' 'min':'sec . 'Bytes:'bytes .
  35. temp=STRIP(temp)
  36. min=STRIP(min)
  37. sec=STRIP(sec)
  38. bytes=STRIP(bytes)
  39. IF temp~='' & LEFT(UPPER(STRIP(temp)),8)~=LEFT(UPPER(filename),8) THEN
  40.   tfail='wrong file' temp
  41. ELSE IF DATATYPE(min,'W') & DATATYPE(sec,'W') & DATATYPE(bytes,'W') THEN
  42.   DO
  43.     secs=(min*60)+sec
  44.     IF indx=14 THEN CALL DELAY(99) /* wait for dos to finish upload */
  45.     temp=STATEF(PRAGMA('D')'/'filename)
  46.     temp=WORD(temp,2)
  47.     IF ~DATATYPE(temp,'W') THEN temp=0
  48.     IF indx=14 & (temp+1024)<bytes THEN tfail='ul size'
  49.     IF indx=15 & temp>(bytes+1024) THEN tfail='dl size'
  50.   END
  51. ELSE tfail='transfer stats were not numeric! min='min 'sec='sec 'bytes='bytes
  52. IF tfail~='' THEN
  53.   DO
  54.     line=PRAGMA('D')'/'filename pen3'*** Transfer failed! ***'def
  55.     SAY line||CR
  56.     CALL send2log(line 'tfail:'tfail)
  57.     CALL send2log('***' string)
  58.     ADDRESS AREXX bbsSounds.rexx bbspath'Sounds/' 'TFAIL'
  59.     IF indx=14 & WORD(STATEF(filename),2)=0 THEN CALL DELETE(filename)
  60.     EXIT 1
  61.   END
  62. ELSE IF secs>0 THEN
  63.   Say 'Transfer Speed:' TRUNC(bytes/secs+.05,1) 'characters per second.'CR
  64. Remote OFF
  65. Send '^G'
  66. Remote ON
  67. line=left(filename,16,' ')
  68. IF indx=14 THEN
  69.   DO
  70.     temp=countcheck(bbspath'Numbers/Bytes.UpLoad' 0)+bytes
  71.     CALL countcheck(bbspath'Numbers/Bytes.UpLoad' temp)
  72.     line=line 'uled'
  73.   END
  74. ELSE
  75.   DO
  76.     temp=countcheck(bbspath'Numbers/Bytes.DownLoad' 0)+bytes
  77.     CALL countcheck(bbspath'Numbers/Bytes.DownLoad' temp)
  78.     temp=countcheck(bbspath'Numbers/Files.DownLoad' 0)+1
  79.     CALL countcheck(bbspath'Numbers/Files.DownLoad' temp)
  80.     tfiles=''
  81.     xdev=''
  82.     IF EXISTS(filename'.xdl') THEN
  83.       DO
  84.         IF OPEN(f,filename'.xdl','R')~=0 THEN
  85.           DO
  86.             xdev=READLN(f)
  87.             tfiles=READLN(f)
  88.             CALL CLOSE(f)
  89.           END
  90.       END
  91.     ELSE IF extdir~='' THEN
  92.       DO
  93.         num=POS(':',extdir)
  94.         IF num>1 THEN temp=LEFT(extdir,num-1)
  95.         IF SHOWLIST('A',UPPER(temp)) THEN xdev=temp
  96.       END
  97.     IF xdev='' THEN
  98.       DO
  99.         temp=PRAGMA('D')
  100.         xdev=SPACE(LEFT(temp,POS(':',temp)-1),1,'_')
  101.       END
  102.     IF ~DATATYPE(tfiles,'W') THEN tfiles=1
  103.     temp=countcheck(bbspath'Numbers/Bytes.X.'xdev 0)+bytes
  104.     CALL countcheck(bbspath'Numbers/Bytes.X.'xdev temp)
  105.     temp=countcheck(bbspath'Numbers/Files.X.'xdev 0)+tfiles
  106.     CALL countcheck(bbspath'Numbers/Files.X.'xdev temp)
  107.     line=line 'dled'
  108.   END
  109. line=line protocol TIME('C') bytes 'bytes' PRAGMA('D')
  110. CALL send2log(line)
  111. EXIT 0
  112.  
  113.  
  114. countcheck:
  115. PARSE ARG fname' 'cknum .
  116. IF ~EXISTS(fname) THEN
  117.   DO
  118.     IF cknum=0 THEN RETURN 0
  119.     IF OPEN(f,fname,'W')=0 THEN RETURN 0
  120.     CALL WRITELN(f,cknum)
  121.     CALL CLOSE(f)
  122.     RETURN cknum
  123.   END
  124. IF OPEN(f,fname,'R')=0 THEN
  125.   DO
  126.     CALL DELAY(99)
  127.     IF OPEN(f,fname,'R')=0 THEN RETURN cknum
  128.   END
  129. retval=STRIP(READLN(f))
  130. CALL CLOSE(f)
  131. IF ~DATATYPE(retval,'W') THEN retval=0
  132. IF ~DATATYPE(cknum,'W') THEN cknum=0
  133. IF retval<cknum THEN
  134.   DO
  135.     IF OPEN(f,fname,'W')~=0 THEN
  136.       DO
  137.         CALL WRITELN(f,cknum)
  138.         CALL CLOSE(f)
  139.         RETURN cknum
  140.       END
  141.   END
  142. RETURN retval
  143.  
  144.  
  145. send2log:
  146. PARSE ARG sendline
  147. logfile=bbspath'Logs/log.'DATE('S')
  148. IF ~OPEN('log',logfile,'A') THEN
  149.   DO
  150.     IF ~OPEN('log',logfile,'W') THEN
  151.       DO
  152.         SAY 'failed to open log file'CR
  153.         RETURN
  154.      END
  155.   END
  156. CALL WRITELN('log',sendline)
  157. CALL CLOSE('log')
  158. RETURN
  159.  
  160.  
  161. FAILURE:
  162. SYNTAX:
  163. lin.1=''ERRORTEXT(RC)''
  164. lin.2=SIGL-1     SOURCELINE(SIGL-1)
  165. lin.3=SIGL ''SOURCELINE(SIGL)''
  166. lin.4=SIGL+1     SOURCELINE(SIGL+1)
  167. DO er=1 TO 4
  168.   IF level>sysoplevel | ~frombb THEN SAY 'bbsKillUser:' lin.er||CR
  169.   IF frombb THEN CALL send2log('bbsXferStats:' lin.er)
  170. END
  171. EXIT 1
  172.  
  173. /* bbsXferStats.rexx */
  174.